package com.bird.thread.base.stopthread;

/**
 * @author sijunqiang
 * @data 2021/6/26 14:08
 * @description: 如果在执行过程中 每次循环都会调用sleep或者wait方法
 * 那么 不需要每次迭代都检查是否已中断。
 */
public class RightWayStopThreadWithSleepEveryLoop {

    public static void main(String[] args) throws InterruptedException {
        Runnable runnable = () -> {
            int num = 0;
            try {
            while (num <= 10000) {
                if (num % 100 == 0) {
                    System.out.println(num + " 是100的倍数");
                }
                num++;
                Thread.sleep(10);// 模拟当线程阻塞的情况下 外部进行干预中断这个线程会出现什么问题 结果采取抛出异常的信息
            }

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    };
        // 通知 thread.start(). 通知JVM启动一个新的线程，来执行run方法里面的逻辑.


        Thread thread = new Thread(runnable); //构建线程类实例
        thread.start();// main线程，call 调用thread.start(); 先通知JVM启动一个新的线程
        Thread.sleep(5000);// 让主线程阻塞50ms 然后在执行任务
        thread.interrupt();//中断线程
    }
    // 总结：每次迭代后 线程阻塞时 中断线程 被阻塞的线程就会以抛出异常的形式进行中断线程。

}
